/**
 * @ Author:Yoann Meclot. MSay2
 * @ Created on:2021-06-14 17:49:33
 * @ Modified on: 2021-06-14 19:09:27
 */
/**
 * Copyright (c) 2020-2021 MSay2 (Yoann Meclot) - @msay2/tspoet
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { Cloneable } from "../Cloneable.js";
import { Comparable } from "../Comparable.js";
import { Equalsable } from "../Equalsable.js";
import { Filterable } from "../Filterable.js";
import { Hashable } from "../Hachable.js";
import { Stringable } from "../Stringable.js";
export declare abstract class SetPool<B> implements Cloneable<SetPool<B>>, Hashable, Equalsable, Stringable
{
    public abstract put(value:B):boolean;
    
    public abstract putAll(set:SetPool<B>):void;
    
    public abstract get(index:number):B;
    
    public abstract getEntryAt(index:number):SetPool.Entry;
    
    public abstract set(index:number, value:B):void;
    
    public abstract contains(value:B):boolean;
    
    public abstract remove(index:number):B;
    
    public abstract equals(o:B):boolean;
    
    public abstract sort(comparable:Comparable<B>):void;
    
    public abstract filter(filter:Filterable<B>):SetPool<B>;
    
    public abstract entrySet():Iterable<SetPool.Entry>;
    
    public abstract capacity():number;
    
    public abstract clear():void;
    
    public abstract isEmpty():boolean;
    
    public abstract size():number;
    
    public abstract toArray():B[];
    
    public abstract toString():string;
    
    public abstract clone():SetPool<B>;
    
    public abstract hashCode():number;

    static Entry:{
        new ():{
            getValue():Object;

            setValue(value:Object):Object;

            equals(object:Object):boolean;

            hashCode():number;

            toString():string;
        };
    };
}
export declare namespace SetPool
{
    type Entry = InstanceType<typeof SetPool.Entry>;
    type Iterator<B> = Iterable<B>;
}
//# sourceMappingURL=SetPool.d.ts.map